package com.finalcial.service;

import java.util.Date;
import java.util.List;
import java.util.Map;






/**
 * 申报信息
 * @author Administrator
 *
 */
public interface DeclarationInformationService {
	/**申请界面信息
	 * 根据员工的id查询出所有的报销信息(直接查询报销表的id)session 
	 * @param userId 用户id
	 * @return 报账人姓名  报账名称(报销类型名 用户名) 报账id 金额 审批状态
	 * 
	 */
	public List<Map<String, Object>> listSingMsgByStaff(Integer userId, Integer startPos, Integer pageSize);
	
	
	/**
	 * 流程跟踪--点击某一行获取相应的报账id、报账类型名--直接显示在流程跟踪的
	 * 显示流程追踪表信
	 * @param reimbursementId 报账id
	 * @return 角色名(通过审批表的userId)、部门名(通过审批表的userId)、用户名(通过审批表的userId)、审批意见、审批状态、审批时间、工作状态名、报销时间
	 */
	public List<Map<String, Object>> listProcessMsg(String reimbursementId);
	
	/**
	 * 点击某一行待办信息--进入对应的类型界面--页面参数(报销类型名、报销id)
	 * 获取基本信息
	 * @param reimbursementId 报销id
	 * @return 报销表  报账时间(费用发生时间) 是否员工垫付 报账单号(报销id) 报账说明(票据名称） 是否个人专项 附单张数
			公司表 报账单位名称 公司代码 
			票据表 费用发生日 发票类型 
			用户表 报账人电话 报账人 
			收款表 收支方式
			预算指标（费用类型）
	 */
	public List<Map<String,Object>>  getEssentialInformation(String reimbursementId);//（报销id）【通用于四种报销类型的表数据】

	/**
	 * 其他信息-- 点击内部收款人
	 * @param reimbursementId 报账id
	 * @return
	 * 用户表：用户姓名（报账人）用户id（员工编号）银行名称（开户行） 银行卡账号） 部门表：部门名（所属部门）  收款表： 收款类型（对内） 公司表： 公司名称 金额
	 */
	public List<Map<String,Object>>  getOtherInformation(String reimbursementId);//（报销id）// 根据报销id得到内部收款人信息
	
	/**
	 * 申报信息界面
	 * 通过名字和金额区间 处理状态查询出相应的数据
	 * @param userName 用户姓名
	 * @param startMoney 金额
	 * @param EndMoney 金额
	 * @param approvalStateName 处理状态
	 * @return 报销的数据
	 */
	public List<Map<String , Object>> getSingMsg(Integer userId,String userName,Integer startMoney,Integer EndMoney,String approvalStateName,String reimbursementTypeName);
	
	
	/**
	 *增加补单的时候修改报销表的金额不含税
	 * @param reimbursementId 报销id
	 * @param invoiceMoney 补单金额 
	 * @param supplementReason 原因
	 * @param invoiceIdExplain 说明
	 * @param invoiceNumber 补单张数
	 * @param supplementTime 补单时间
	 * @param workStateName 工作状态
	 * @param userId 用户id
	 * @return
	 */
	public Integer insertsupplementMs(String reimbursementId, String supplementReason,String invoiceIdExplain,Integer invoiceNumber,Date supplementTime,Integer invoiceMoney,String workStateName,Integer userId);

	
	/**
	 * 查询补单界面信息总条数
	 * @param userId
	 * @return
	 */
	public Integer listSingMsgByStaffCounts(Integer userId);

	

}
